package com.cskaoyan.javase.array._4operation._2reverse;

import java.util.Arrays;

/**
 * 数组的逆序
 * 即颠倒数组中元素的顺序，在原数组的数组上改变元素顺序：
 * 比如[1,2,3] --> [3,2,1]
 * 即下标为"0"和"length-1"位置的元素互换
 * 下标为"1"和"length-2"位置的元素互换....
 * 即，把下标为"i"和"length-1-i"元素互换即可！
 *
 * 数组元素的逆序需不需要创建新数组,可不可以在原先的数组上直接完成?
 * 很明显是可以的,没有改变数组的长度,就是赋值,所以可以直接进行,无需创建新数组.
 *
 * @since 16:11
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6};
        System.out.println("逆序之前:" + Arrays.toString(arr));
        reverse(arr);
        System.out.println("逆序之后:" + Arrays.toString(arr));
    }

    // 数组的逆序
    public static void reverse(int[] arr) {
        // 逆序,说白了需要遍历数组,然后交换数组元素的取值
        // 这个遍历需要仅遍历一半元素即可
        for (int i = 0; i < arr.length / 2; i++) {
            // 把下标为"i"和"length-1-i"元素互换即可！
            /*
                经典操作: 交换变量取值
                因为直接赋值会覆盖掉原先的取值
                所以程序中交换取值,需要一个temp
                一般格式如下:
              */
            int temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = temp;
        }
    }
}
